Python数据分析流程(读取数据、数据清洗)

347次阅读
没有评论

共计 1724 个字符,预计需要花费 5 分钟才能阅读完成。

数据分析的基本流程,一般分为四个步骤(对应四个工作过程):

  • 了解并确定问题,即数据收集
  • 分解问题和数据,即数据清洗
  • 评估与分析数据,即数据分析
  • 得出结论和支持决策,即数据报告

读取数据

导库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

sns.set(style="darkgrid", font_scale=1.2)
plt.rcParams["font.family"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
warnings.filterwarnings("ignore")

加载数据集

data = pd.read_csv("data.csv")
print(data.shape)
data.head()
data.sample()

数据清洗

符合整洁数据的三个特点:

  • 每列是一个变量
  • 每行是一个观察值
  • 每个单元格是一个值

缺失值

缺失值探索

data.info()

t = data.isnull().sum()
t = pd.concat([t, t / len(data)], axis=1)  # 左右拼接,横向拼接
t.columns = ["缺失值数量", "缺失值比例"]
display(t)

缺失值处理

对于缺失值,可以使用如下的方式处理 :

  • 删除缺失值
    • 仅适合于缺失数量很少的情况
  • 填充缺失值
    • 数值变量
      • 均值填充
      • 中值填充
      • 插值填充
    • 类别变量
      • 众数填充
      • 单独作为一个类别
    • 额外处理说明
      • 缺失值小于 20%,直接填充
      • 缺失值在 20% ~ 80%,填充变量后,同时增加一列,标记该列是否缺失,参与后续建模
      • 缺失值大于 80%,将该列转换为二值变量 (例如 1 与 0),用来表示记录是否缺失
## 数据发布
print(data["CRIM"].skew())
sns.distplot(data["CRIM"].dropna())
## 右偏,可采用中位数填充
data.fillna({"CRIM": data["CRIM"].median()}, inplace=True)

异常值

异常值探索

data.describe()  # 显示数据的统计信息,可作为一种简单的异常探索方式 

根据正态分布的特性,可以将 3σ 之外的数据,视为异常值。

mean, std = data["CRIM"].mean(), data["CRIM"].std()
lower, upper = mean - 3 * std, mean + 3 * std
print("均值:", mean)
print("标准差:", std)
print("下限:", lower)
print("上限:", upper)
## 获取在 3 倍标准差之外的数据
data["CRIM"][(data["CRIM"] < lower) | (data["CRIM"] > upper)]

箱线图是一种常见的异常检测方式,其采用四分位的方式进行检测。

sns.boxplot(data=data["CRIM"])

异常值处理

对于异常值,可以采用如下的方式处理 :

  • 删除异常值
  • 视为缺失值处理
  • 对数转换
  • 使用临界值填充(在 3σ 与箱线图中,可以这样来处理)
  • 使用分箱法离散化处理

如果数据中存在较大的异常值,可以通过取对数来进行转换,这样可以得到一定的缓解。例如,变量呈现右偏分布(不适合左偏分布),可以进行取对数转换。

fig, ax = plt.subplots(1, 2)  # 子图的行列数
fig.set_size_inches(15, 5)
sns.distplot(data["CRIM"], ax=ax[0])
sns.distplot(np.log(data["CRIM"]), ax=ax[1])

取对数的方式比较简单,不过也存在一些局限:取对数只能针对正数操作。不过可以通过如下的方式进行转换:
np.sign(x) * np.log(np.abs(x) + 1)

重复值

重复值探索

print(data.duplicated().sum())  # 发现重复值
data[data.duplicated(keep=False)]  # 查看哪些记录出现了重复值 

重复值处理

data.drop_duplicates(inplace=True)  # 直接删除重复值 

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2023-08-04发表,共计1724字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
767
评论数
207
阅读量
682680
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
123云盘限时福利:登录即送1个月VIP尊享权益!

123云盘限时福利:登录即送1个月VIP尊享权益!

🎁  零成本体验 20T 超大空间与会员加速通道 🎉 活动亮点 登录即送:无需任何复杂操作,登录账号直接领取 ...
最新评论
阿伯手记 阿伯手记 发了:https://aboss.top/moments/1064
吴蛋蛋 吴蛋蛋 快发小年快乐
吴蛋蛋 吴蛋蛋 Ask4Me,这个之前看server酱接入了
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2026年2月 每日精选

2026年2月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 2 月 17 日 国家全民健身信息服务平台 过年...
DrawLink:一键生成链接视觉卡片,提升分享点击率

DrawLink:一键生成链接视觉卡片,提升分享点击率

小贴士 :此站或已变迁,但探索不止步。我们已为您备好「类似网站」精选合集,相信其中的发现同样能为您带来惊喜。
WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror 是一款基于 WebRTC 技术的在线屏幕共享工具,它利用浏览器内置的...